#include <bits/stdc++.h>
using namespace std;
const int N = 110;
double eps = 1e-7; // 无穷小

int n;
double a[N][N];

bool zero(double x)
{
	return fabs(x) < eps;
}

int guass()
{
	for(int i = 1;i <= n;i ++) // 确定主元
	{
		int aim = i;
		for(int j = 1;j <= n;j ++) // 找第 i 列最大的元素做为主元
		{
			if(j < i && !zero(a[j][j])) continue;
			if(fabs(a[j][i]) > fabs(a[aim][i])) aim = j;
		}
		if(zero(a[aim][i])) return 0;
		// 交换第 i 行和第 aim 行
		for(int j = i;j <= n + 1;j ++) swap(a[i][j], a[aim][j]);
		for(int j = n + 1;j >= i;j --) a[i][j] /= a[i][i];
		for(int j = 1;j <= n;j ++)
		{
			if(j == i) continue;
			double t = a[j][i] / a[i][i];
			for(int k = i;k <= n + 1;k ++) a[j][k] -= t * a[i][k];
		}
	}
	return 1;
}

int main()
{
	cin >> n;
	for(int i = 1;i <= n;i ++)
		for(int j = 1;j <= n + 1;j ++)
			cin >> a[i][j];
	int ans = guass();
	if(!ans) cout << "No Solution" << endl;
	else 
	{
		for(int i = 1;i <= n;i ++) printf("%.2lf\n", a[i][n + 1]);
	}
	return 0;
}